.. _cmmCfgSetRingCntr: cmmCfgSetRingCntr =================== ------------------- SYNOPSYS ````````` .. code-block:: none VT_I4 cmmCfgSetRingCntr( [in] VT_I4 Axis, [in] VT_I4 TargCntr, [in] VT_I4 IsEnable, [in] VT_R8 CntMax ) DESCRIPTION ````````````` - cmmCfgSetRingCntr 함수는 ë§ ì¹´ìš´í„° ê¸°ëŠ¥ì˜ í™œì„±/비활성 ìƒíƒœ ì„¤ì • ë° ë§ ì¹´ìš´í„° 범위를 ì„¤ì •í•©ë‹ˆë‹¤. 해당 모션 축(Axis) ì˜ Command ë˜ëŠ” Feedback 카운터를 대ìƒìœ¼ë¡œ ë§ ì¹´ìš´í„°ë¥¼ ì„¤ì •í•©ë‹ˆë‹¤. PARAMETER ````````````` - Axis : 축(채ë„) 번호. 축 번호는 0 부터 시작합니다. \ - TargCntr : ë§ ì¹´ìš´í„° 기능 ëŒ€ìƒ ì¹´ìš´í„°ë¥¼ ì„¤ì •í•©ë‹ˆë‹¤. .. csv-table:: :widths: 10 80 :header-rows: 1 :stub-columns: 0 value, Meaning 0 (cmCNT_COMM), Command Counter 1 (cmCNT_FEED), Feedback Counter - IsEnable : cmmCfgSetRingCntr í•¨ìˆ˜ì˜ ì¸ìžì´ë©°, ë§ ì¹´ìš´í„° 기능 활성/비활성 ìƒíƒœë¥¼ ì„¤ì •í•©ë‹ˆë‹¤. .. csv-table:: :widths: 10 80 :header-rows: 1 :stub-columns: 0 value, Meaning 0 (cmFALSE), ë§ ì¹´ìš´í„° ê¸°ëŠ¥ì„ ì‚¬ìš©í•˜ì§€ 않습니다. 1 (cmTRUE), ë§ ì¹´ìš´í„° ê¸°ëŠ¥ì„ ì‚¬ìš©í•©ë‹ˆë‹¤. - CntMax : cmmCfgSetRingCntr í•¨ìˆ˜ì˜ ì¸ìžì´ë©°, ë§ ì¹´ìš´í„° 범위를 ì„¤ì •í•©ë‹ˆë‹¤. ë§ ì¹´ìš´í„° ê¸°ëŠ¥ì´ í™œì„±í™”ë˜ë©´ ì§€ì •í•œ 카운터는 0~CntMax 사ì´ì˜ ê°’ì—서만 카운트 ë©ë‹ˆë‹¤. ì§€ì •í•˜ëŠ” ì¹´ìš´í„° ê°’ì˜ ë‹¨ìœ„ëŠ” “Unit distanceâ€ì— ì˜í•´ ì •ì˜ë˜ëŠ” 논리ì 거리 단위입니다. RETURN VALUE ````````````` +--------------+----------------+ | Value | Meaning | +==============+================+ | ìŒìˆ˜ | 수행 실패 | +--------------+----------------+ | cmERR_NONE | 수행 성공 | +--------------+----------------+ REFERENCE ``````````` .. image:: ../../Image/4장_10.png EXAMPLE ````````` .. code-block:: c++ :linenos: :emphasize-lines: 5 C/C++ #include “Cmmsdk.h†#include “CmmsdkDef.h†long nAxisNo = 1; // ë§ ì¹´ìš´í„° ê¸°ëŠ¥ì„ ì„¤ì •í• ì¶•ì„ ì„ íƒí•©ë‹ˆë‹¤. void OnSetRingCounter () { long nIsEnable; // ë§ ì¹´ìš´í„° ì„¤ì • ì •ë³´. double fCntMax; /* 커맨드 카운터를 대ìƒìœ¼ë¡œ ë§ì¹´ìš´í„° ê¸°ëŠ¥ì„ í™œì„±í™”í•©ë‹ˆë‹¤. 40000 펄스가 ë˜ë©´ 커맨드 ì¹´ìš´í„°ê°€ 다시 ‘0’부터 카운트 ë©ë‹ˆë‹¤.*/ cmmCfgSetRingCntr ( nAxisNo, // ëŒ€ìƒ ì¶• ì„¤ì • cmCNT_COMM, // ë§ ì¹´ìš´í„° ëŒ€ìƒ ì¹´ìš´í„° ì„¤ì • cmTRUE, // ë§ ì¹´ìš´í„° 기능 활성/비활성 ì„¤ì • 40000 // ë§ ì¹´ìš´í„° 범위 ì„¤ì • ); // 해당 ì¶•ì˜ ë§ì¹´ìš´í„° ì„¤ì • ìƒíƒœë¥¼ 반환합니다. cmmCfgGetRingCntr ( nAxis, cmCNT_COMM, &nIsEnable, &fCntMax ); } void OnMove () { /* ë§ ì¹´ìš´í„° 범위가 ‘0 ~ 40000’으로 ì„¤ì •ë˜ì–´ 있으므로 Command Count ê°’ì´ 40000 ì´ ë˜ë©´ ìžë™ìœ¼ë¡œ 0 ì—ì„œ Command Count 를 계수 합니다. */ cmmSxVMoveStart ( nAxisNo,1 ); } .. code-block:: none :linenos: Visual Basic Dim nAxisNo As Long ‘ ë§ ì¹´ìš´í„° ê¸°ëŠ¥ì„ ì„¤ì •í• ì¶•ì„ ì„ íƒí•©ë‹ˆë‹¤. nAxisNo = 1 Private Sub OnSetRingCounter () Dim nIsEnable As Long ‘ ë§ ì¹´ìš´í„° ì„¤ì • ì •ë³´. Dim fCntMax As Double ‘ 커맨드 카운터를 대ìƒìœ¼ë¡œ ë§ì¹´ìš´í„° ê¸°ëŠ¥ì„ í™œì„±í™”í•©ë‹ˆë‹¤. ‘ 40000 펄스가 ë˜ë©´ 커맨드 ì¹´ìš´í„°ê°€ 다시 ‘0’부터 카운트 ë©ë‹ˆë‹¤. Call cmmCfgSetRingCntr ( nAxisNo, cmCNT_COMM, cmTRUE, 40000 ) ‘ 해당 ì¶•ì˜ ë§ì¹´ìš´í„° ì„¤ì • ìƒíƒœë¥¼ 반환합니다. Call cmmCfgGetRingCntr ( nAxis, cmCNT_COMM, nIsEnable, fCntMax ) End Sub Private Sub OnMove () ‘ ë§ ì¹´ìš´í„° 범위가 ‘0 ~ 40000’으로 ì„¤ì •ë˜ì–´ 있으므로 Command Count ê°’ì´ 40000 ì´ ë˜ë©´ ‘ ìžë™ìœ¼ë¡œ 0 ì—ì„œ Command Count 를 계수 합니다. Call cmmSxVMoveStart ( nAxisNo ,1) End Sub .. code-block:: none :linenos: Delphi procedure OnSetRingCounter (); var nIsEnable : LongInt; // ë§ ì¹´ìš´í„° ì„¤ì • ì •ë³´. fCntMax : Double; begin { 커맨드 카운터를 대ìƒìœ¼ë¡œ ë§ì¹´ìš´í„° ê¸°ëŠ¥ì„ í™œì„±í™”í•©ë‹ˆë‹¤. 40000 펄스가 ë˜ë©´ 커맨드 ì¹´ìš´í„°ê°€ 다시 ‘0’부터 카운트 ë©ë‹ˆë‹¤. } cmmCfgSetRingCntr (cmX1, cmCNT_COMM, cmTRUE, 40000 ); // 해당 ì¶•ì˜ ë§ì¹´ìš´í„° ì„¤ì • ìƒíƒœë¥¼ 반환합니다. cmmCfgGetRingCntr (cmX1, cmCNT_COMM, @nIsEnable, @fCntMax ); end; procedure OnMove (); begin { ë§ ì¹´ìš´í„° 범위가 ‘0 ~ 40000’으로 ì„¤ì •ë˜ì–´ 있으므로 Command Count ê°’ì´ 40000 ì´ ë˜ë©´ ìžë™ìœ¼ë¡œ 0 ì—ì„œ Command Count 를 계수 합니다. } cmmSxVMoveStart (cmX1,1 ); end; .. seealso:: :ref:`cmmCfgGetRingCntr`